<script>
     /*
                二、多列索引 (复合索引)

                            多列索引是基于表中两个或多个列创建的索引。     列的顺序至关重要。 
                            
                            1、工作原理：

                                    类似于一个联合目录，例如先按“国家”排序，再按“城市”排序。如果你想找“中国-北京”的记录，它非常快。

                                    但如果你直接想找所有叫“北京”的城市（无论哪个国家），这个目录就没什么用了。

                            2、适用场景：

                                    ①、WHERE 子句中同时涉及多列的查询。

                                    ②、需要对多列进行组合排序的查询 (ORDER BY col1, col2)

                                    ③、查询只涉及到索引中的列（覆盖索引），无需回表查询数据行，性能极高。

                            3、关键规则：
                                     
                                    这是理解复合索引最重要的概念。

                                    数据库只能使用索引从 "最左边的列开始"的 "连续部分"。

                                    例如：

                                        我们创建一个复合索引 IX_Blogs_AuthorId_PublishedDate。

                                        modelBuilder.Entity<Blog>()
                                                .HasIndex(b => new { b.AuthorId, b.PublishedDate });

                                        下表分析了不同查询条件能否利用该索引：

                                            查询条件                                                         是否使用索引？                原因

                                        ①、WHERE AuthorId = 5 AND PublishedDate > '2023-01-01'                      是                  完全匹配索引列

                                        ②、WHERE AuthorId = 5                                                       是                  只匹配了索引的第一列AuthorId

                                        ③、WHERE PublishedDate > '2023-01-01'                                     通常否                没有从最左侧AuthorID开始。就像直接翻电话簿找叫“明”的人，而不是先找“张”姓

                                        ④、WHERE AuthorId = 5 AND Title = 'Hello'                                 部分使用               只能使用到 AuthorId 这部分索引，然后需要对 Title 进行过滤。

                                        ⑤、ORDER BY AuthorId, PublishedDate                                         是                  索引本身已经按这个顺序排好，可以直接用于排序。

                                        ⑥、ORDER BY PublishedDate                                                   否                  没有从最左列开始。
            */
</script>